//在原生js中引入模块,文件不能没有后缀名,不然后找不到文件
// import {name} from '../module'
import {name} from '../module.js'
console.log(name)
//在原生js中引入模块,路径必须有指定的文件名和后缀,不然会报错,不然后找不到文件
//import  {lowercase} from './utils'
// import  {lowercase} from './utils/index.js'
// console.log(lowercase('HCB'))
//这种会直接从node_modules中查找文件,
// import { name } from 'module.js'
//当前路径
// import { name } from './module.js'
//绝对路径
// import { name } from '/04-import/module.js'
//完整的url
// import { name } from 'http://localhost:3000/04-import/module.js'

// console.log(name)
//-------------------------------
//只执行这个模块但是并不提取这个模块的成员
// import {} from './module.js'
// 简写语法
// import './module.js'
//以上这种写法可以在我们导入一些不需要外界控制的子功能模块时可以使用
//---------------------------------
/**如果一个模块需要导出的成员特别多,
 * 我们可以用'*'把所有成员提取出来,
 * 然后通过as的方式把提取到的成员放在一个对象当中*/
// import * as mod from './module.js'
// console.log(mod)
//----------------------------
/**import关键词可以理解为导入模块的声明,
 * 它需要在开发阶段就明确我们需要导入模块的路径,
 * 但是有的时候,我们的模块路径实在运行阶段知道的,
 * 这种情况下,我们不能使用import关键词去from变量*/
// var modulePath = './module.js'
// import {name} from modulePath
// console.log(name);//报错Uncaught SyntaxError: Unexpected identifier
/**而且有些时候我们需要在满足某些情况下再导入这个模块,
 * 在这种情况下也没有办法使用import,
 * 因为import只能出现在最顶层的作用域,
 * 并不能出现在if语句或函数当中*/
// if(true){
//     import { name } from './module.js'
// }

/**
 * 如何动态的加载模块?
 * 遇到以上这两种情况需要动态导入模块的机制
 * es module 提供了一个全局的import函数,
 * 它专门用来动态导入模块,
 * 具体用法就是通过import函数传入需要导入这个模块的路径,
 * 而且这个函数返回的是Promise,
 * 当模块加载结束会自动执行then函数,模块的对象我们可以通过参数去拿到
*/
// import('./module.js').then(function(module){
//     console.log(module)
// })
//------------------------------------
/**
 * 如何同事导出命名成员和默认成员?
 */
// import {name , age , default as title} from './module.js'
// import title , {name , age  } from './module.js'
// console.log(name , age , title)